package cn.wolfcode.luowowo.hotel.service;

import cn.wolfcode.luowowo.hotel.domain.Hotel;
import cn.wolfcode.luowowo.hotel.query.HotelQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

/**
 * 酒店服务
 *
 * @author win
 */
public interface IHotelService {

    void deleteById(Long id);

    void saveOrUpdate(Hotel record);

    Hotel findById(Long id);

    List<Hotel> selectAll();

    PageInfo<Hotel> query(HotelQueryObject qo);

    /**
     * 根据是否特价查询酒店
     *
     * @param whetherSpecialPrice true 是特价酒店, false 不是特价酒店
     * @return
     */
    List<Hotel> queryHotelCitySpecial(boolean whetherSpecialPrice);

    /**
     * 根据酒店主题编号查询酒店
     *
     * @param themeId 酒店主题编号
     * @return
     */
    List<Hotel> queryByThemeId(Long themeId);

    /**
     * 根据目的地的编号查询酒店
     *
     * @param destId 目的编号
     * @return
     */
    List<Hotel> queryByDestId(Long destId);


    /**
     * 根据目的地查询酒店
     *
     * @param qo 查询对象
     * @return
     */
    List<Hotel> queryByDestinationId(HotelQueryObject qo);

    /**
     * 根据编号查询酒店
     *
     * @param qo
     * @return
     */
    Hotel queryByHotelId(HotelQueryObject qo);

    /**
     * 查询当前酒店的指定日期是否有房间
     *
     * @param qo 查询对象
     * @return map key是当前酒店的房间类型, value: 是各种类型剩余的房间数量
     */
    Map<String, Object> thereRoom(HotelQueryObject qo);

    /**
     * 查询所有的酒店
     *
     * @return
     */
    List<Hotel> list();
}
